package com.ruoyi.project.admin.personmanager.controller;

import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.project.admin.personmanager.domain.Person;
import com.ruoyi.project.admin.personmanager.service.IPersonService;
import com.ruoyi.project.cms.commons.CMSConst;
import com.ruoyi.project.cms.type.domain.Type;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
@RequestMapping("/admin/personmanager")
public class PersonController  extends BaseController {
    private String prifex="admin/personmanager";
    @Autowired
    private IPersonService personService;

    @GetMapping()
    @RequiresPermissions("admin:personmanager:view")
    public String view(){

        return prifex+"/person";
    }

    //声明单元方法:动态查询所有系统公告类型
    @RequiresPermissions("admin:personmanager:list")
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(Person person)
    {
        //分页处理
        startPage();
        //调用业务层方法查询公告类型集合
        List<Person> list = personService.selectPersonList(person);
        //返回TableDataInfo（相当于返回PageResult 这个对象里面有总的记录集合和总的数据分页的两个参数page和rows）
        return getDataTable(list);
    }


    /**
     * 新增员工
     */
    @GetMapping("/add")
    public String add() {
        return prifex + "/add";
    }

    /**
     * 新增保存员工
     */
    @RequiresPermissions("admin:personmanager:add")
    @Log(title = "人员管理", businessType = BusinessType.INSERT)
    @PostMapping("/add")
    @ResponseBody
    public AjaxResult addSave(@Validated Person person) {
        if (CMSConst.TYPE_NAME_NOT_UNIQUE.equals(personService.checkPersonNameUnique(person))) {
            return error("新增员工'" + person.getPersonName() + "'失败，员工姓名已存在");
        }

        return toAjax(personService.insertPerson(person));
    }

    /**
     * 检查员工姓名是否唯一
     *
     * @return 字符串0 - 唯一数据，可以使用
     * 字符串1 - 非唯一数据，不可使用
     */
    @PostMapping("/checkPersonNameUnique")
    @ResponseBody
    public String checkPersonNameUnique(Person person) {
        return personService.checkPersonNameUnique(person);
    }
}
